package edu.zut.cs.software.teach.Base.service;

import java.io.Serializable;
import java.util.List;

import edu.zut.cs.software.teach.Base.domain.BaseTreeEntity;
/**
 * 
 * @author yuki
 *
 * @param <T>a type variable
 * @param <PK>the primary key for that type
 */
public interface GenericTreeManager<T extends BaseTreeEntity<T, PK>, PK extends Serializable>
		extends GenericManager<PK,T> {

	/**
	 * 获取制定id的全部祖先实体集合；
	 *
	 */
	public List<T> getAncestors(PK id);

	/**
	 * 获取制定id的直接孩子实体集合；
	 *
	 */
	public List<T> getChildren(PK id);

	/**
	 * 获取制定id的全部子孙实体集合；
	 *
	 */
	public List<T> getDescendants(PK id);

	/**
	 * 获取根节点实体集合
	 */
	public List<T> getRoot();

}
